home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 46 / Amiga Format CD46 (1999-10-20)(Future Publishing)(GB)[!][issue 1999-12].iso / -in_the_mag- / synth_studies / resgrep03b / source / utils.cc < prev    next >
C/C++ Source or Header  |  1999-09-15  |  2KB  |  109 lines

  1. /*
  2.  * Kleine Utilities, die das Leben leichter machen (ganz ohne Zucker.)
  3.  *
  4.  * 22.03.1992 Andre geschrieben.
  5.  */
  6.  
  7. extern "C" {
  8. #include <exec/types.h>
  9. #include <libraries/asl.h>
  10. #include <dos/var.h>
  11. };
  12.  
  13. #include "list.h"
  14. #include "utils.h"
  15.  
  16. extern "C" {
  17. #include <clib/asl_protos.h>
  18. char *strdup(char *);
  19. };
  20.  
  21. /* Wandelt einen PASCAL-String in einen C-String um. */
  22. char *pstr2cstr(void *p)
  23. {
  24.    int index;
  25.    char *pa=(char *)p;
  26.    static char buffer[256];   /* Maximale Länge eines PASCAL-Strings  */
  27.  
  28.    for(index=0; index<*((char *)p); index++)
  29.       buffer[index]=pa[index+1];
  30.    buffer[index]='\0';
  31.    return buffer;
  32. }
  33.  
  34. // Wandelt einen gepackten Typ in einen C-String um.
  35. char *pack2cstr(unsigned long p)
  36. {
  37.    static unsigned long pa[2];
  38.  
  39.    pa[1]=0;
  40.    pa[0]=p;
  41.    return (char *)pa;
  42. }
  43.  
  44. // Wandelt einen C-String in einen Type um.
  45. unsigned long cstr2pack(char *s)
  46. {
  47.    unsigned long  p;
  48.    char *pp;
  49.  
  50.    pp=(char *)&p;
  51.    pp[0]=s[0];
  52.    pp[1]=s[1];
  53.    pp[2]=s[2];
  54.    pp[3]=s[3];
  55.    return p;
  56. }
  57.  
  58. // Holt einen File-Namen vom ASL-Requester
  59.  
  60. char *ASLGetName(void)
  61. {
  62.    BOOL          ret;
  63.    char          buffer[1024];
  64.    int             len;
  65.  
  66.    buffer[0]='\0';
  67.    if( AslRequestTags(fr, ASL_Hail, "ResGrep", TAG_DONE) )
  68.    {
  69.       // Den FileNamen zusammenpuzzlen.
  70.       strcpy(buffer,(char *)(fr->rf_Dir));
  71.       len=strlen(buffer);
  72.       if( len!=0 && *(buffer+len)!='/' && *(buffer+len)!=':' )
  73.      *(buffer+len++)='/';
  74.       strcpy(buffer+len,(char *)(fr->rf_File));
  75.    }
  76.    return strdup(buffer);
  77. }
  78.  
  79. // Fensterkoordinatenberechnung
  80. static int XPos=30;
  81. static int YPos=30;
  82.  
  83. int NewXPos(void)
  84. {
  85.    return XPos;
  86. }
  87.  
  88. int NewYPos(void)
  89. {
  90.    return YPos;
  91. }
  92.  
  93. void CoordsUsed(void)
  94. {
  95.    XPos= (XPos+5)%550;
  96.    YPos= (YPos+14)%200;
  97. }
  98.  
  99. // Berechnet eine neue Filenummer
  100. unsigned long GetNewFileNum(void)
  101. {
  102.    extern list FileList;
  103.  
  104.    if( FileList.getfirst()->getsucc()!=NULL )
  105.       return FileList.getlast()->getpri()+1;
  106.    else
  107.       return 1;
  108. }
  109.